<?php

namespace app\admin\controller;

use think\Controller;
use think\Request;
use think\Db;
//分页功能
use think\Paginator;
use think\Paginator\driver\Bootstrap;

// 活动列表页
class Activity extends AdminController
{
    // 加载活动列表页 并展示
    public function index()
    {
        // 查询活动表
        $list = db('activity')->select();

        return view("activity/index", [
            'title' => '活动列表',
            'list' => $list
        ]);
    }

    // 活动详情 查看 【逻辑与加载编辑活动页相同】
    public function check($id)
    {
        // 查询 activity（活动表）中，指定ID对应的数据
        $data = db('activity')->where('id', $id)->find();

        return view('activity/check', ['data'=>$data, 'id'=>$id]);
    }

    // 活动详情 返回活动列表页

    // 加载添加活动页面
    public function add()
    {
        return view('activity/add');
    }

    // 添加活动 处理
    public function doadd()
    {
        // 接收表单提交过来的数据
        $res = input('post.');
//        dump($res);

        // 查询数据库中是否已存在该活动名 name
        $data = db('activity')->where('name', $res['name'])->find();
//        dump($data);die;

        // 活动名称：输入2-15个字符(仅支持中文)
        if (empty($res['name'])) {
            $this->error('活动名不能为空');
        }
        $pregName = '/^[\x{4e00}-\x{9fa5}]{2,15}+$/u';
        if (!preg_match($pregName, $res['name'])) {
            $this->error('活动名格式不正确o(╥﹏╥)o');
        }
        if (empty($res['total'])) {
            $this->error('优惠总金额不能为空');
        }
        if ($res['total'] <= 0) {
            $this->error('优惠总金额无效');
        }
        if (empty($res['concession'])) {
            $this->error('学员报名优惠金额不能为空');
        }
        if ($res['concession'] <= 0) {
            $this->error('学员报名优惠金额无效');
        }
        if (empty($res['reward'])) {
            $this->error('推荐人奖励金额不能为空');
        }
        if ($res['reward'] <= 0){
            $this->error('推荐人奖励金额无效');
        }
        if (empty($res['starttime'])) {
            $this->error('活动开始时间不能为空');
        }
        if (empty($res['endtime'])) {
            $this->error('活动结束时间不能为空');
        }
        if (empty($res['introduce'])) {
            $this->error('活动介绍不能为空');
        }

        // 判断数据库中是否存在该活动名称
        // 若 $data = null, 则执行添加；否则，添加失败
        if (empty($data)) {
            // 添加单条数据
            $list = db('activity')->insert($res);
            $this->success('活动添加成功(*^▽^*)', 'admin/Activity/index');
        } else {
            $this->error('该活动名已存在');
        }
    }

    // 加载编辑活动页面
    public function edit($id)
    {
        // 查询 activity（活动表）中数据
        $data = db('activity')->where('id', $id)->find();
//        dump($data);die;

        return view('activity/edit', ['data'=>$data, 'id'=>$id]);
    }

    // 编辑活动 处理
    public function doedit($id)
    {
        // 思路
        // 1. 接收表单传输过来的数据
        // 2. 判断活动名是否做过更改，即原来的活动名与现在的活动名是否相等， （提交过来的信息就是最新修改的信息，因此是$res['name']与$data['name']进行比较）
        //      若相等，进行下一步的修改（此时不用验证名称的唯一性），即执行if 外面的操作（跳出if区间，执行if外面的操作）
        //      若不相等，判断名称的唯一性，需查询数据库中是否存在与该名称相等的名称
        // 3. 存在，则提示活动名已存在，同时跳转到；否则，更新后面的内容，且更新会成功执行

        // 1. 接收表单传过来的数据
        $res = input('post.');
//        dump($res);

        // 2. 查询数据库中是否存在该活动名 name
        $data = db('activity')->where('id', $id)->find();
//        dump($data);

        // 活动名称：输入2-15个字符(仅支持中文)
        if (empty($res['name'])) {
            $this->error('活动名不能为空');
        }
        $pregName = '/^[\x{4e00}-\x{9fa5}]{2,15}+$/u';
        if (!preg_match($pregName, $res['name'])) {
            $this->error('活动名格式不正确o(╥﹏╥)o');
        }
        if (empty($res['total'])) {
            $this->error('优惠总金额不能为空');
        }
        if ($res['total'] <= 0) {
            $this->error('优惠总金额无效');
        }
        if (empty($res['concession'])) {
            $this->error('学员报名优惠金额不能为空');
        }
        if ($res['concession'] <= 0) {
            $this->error('学员报名优惠金额无效');
        }
        if (empty($res['reward'])) {
            $this->error('推荐人奖励金额不能为空');
        }
        if ($res['reward'] <= 0){
            $this->error('推荐人奖励金额无效');
        }
        if (empty($res['starttime'])) {
            $this->error('活动开始时间不能为空');
        }
        if (empty($res['endtime'])) {
            $this->error('活动结束时间不能为空');
        }
        if (empty($res['introduce'])) {
            $this->error('活动介绍不能为空');
        }

        // 判断原活动名与编辑的活动名是否相等
        // 不相等时，查询数据库中是否存在该活动名（若$name 返回null, 则证明可以执行更新；否则，提示活动名已存在，再次跳转到编辑页面）
        if (!($res['name'] == $data['name'])) {
            // 查询数据库是否存在该活动名 name
            $name = db('activity')->where('name', $res['name'])->find();
            // 如果 $name为空，则可以执行下一步的更新；否则活动名已存在，请重新输入活动名
            if (! empty($name)) {
                $this->success('活动名已存在，请重新输入(ಥ﹏ಥ)');

            }
        }

        // 执行更新操作
        // 更新 activity表中的数据
        $list = db('activity')->where('id', $id)->update([
            'name'=>$res['name'],
            'total'=>$res['total'],
            'introduce'=>$res['introduce'],
            'concession'=>$res['concession'],
            'reward'=>$res['reward'],
            'starttime'=>$res['starttime'],
            'endtime'=>$res['endtime']
        ]);

        // 判断是否更新成功
        if ($list) {
            $this->success('活动更新成功', 'admin/Activity/index');
        } else {
            $this->error('您没有做任何更新操作', 'admin/Activity/index');
        }

    }

    // 删除该条活动
//    public function delete($id)
//    {
//        // 删除活动
//        $data = db('activity')->where('id', $id)->delete();
//
//        //
//        if ($data > 0) {
//            $this->success("删除成功(*^▽^*)", 'admin/Activity/index');
//        } else {
//            $this->error("删除失败!!!o(╥﹏╥)o");
//        }
//
//    }
    public function delete($id)
    {
        // 删除活动
        $data = db('activity')->where('id', $id)->delete();

        // 将状态码返回给ajax
        if ($data) {
            $arr['status'] = 1;
            $arr['msg'] = '活动删除成功';
            return $arr;
        } else {
            $arr['status'] = 2;
            $arr['msg'] = '活动删除失败';
            return $arr;
        }
    }

    // 验证活动名的唯一性
    public function addcheckactname()
    {
        // 接收表单提交过来的数据
        $res = input('post.');

        // 查询数据库中是否已存在该活动名 name
        $data = db('activity')->where('name', $res['name'])->find();

        // 判断数据库中是否存在该活动名称
        if (empty($data)) {
            return true;
        } else {
            return false;
        }
    }

}
